package com.example.service;

import com.example.model.FraudRiskResult;
import com.example.model.pojo.LoginLog;
import com.example.model.pojo.OperationLog;
import com.example.model.pojo.PaymentRecord;
import com.example.model.pojo.TransferRecord;

import java.util.List;

/**
 * 社保欺诈风险检测服务接口
 * 
 * @author system
 */
public interface FraudDetectionService {

  /**
   * 实时欺诈风险检测
   * 
   * @param userAddress 用户地址
   * @return 风险检测结果
   */
  FraudRiskResult detectRealTime(String userAddress);

  /**
   * 身份冒用风险检测
   * 
   * @param userAddress   用户地址
   * @param operationLogs 操作日志
   * @param loginLogs     登录日志
   * @return 风险检测结果
   */
  FraudRiskResult detectIdentityTheft(String userAddress, List<OperationLog> operationLogs, List<LoginLog> loginLogs);

  /**
   * 资金异常风险检测
   * 
   * @param userAddress    用户地址
   * @param paymentRecords 缴费记录
   * @return 风险检测结果
   */
  FraudRiskResult detectFinancialAnomaly(String userAddress, List<PaymentRecord> paymentRecords);

  /**
   * 地域冲突风险检测
   * 
   * @param userAddress     用户地址
   * @param transferRecords 转移记录
   * @param loginLogs       登录日志
   * @return 风险检测结果
   */
  FraudRiskResult detectLocationConflict(String userAddress, List<TransferRecord> transferRecords,
      List<LoginLog> loginLogs);

  /**
   * 批量风险检测（定时任务使用）
   * 
   * @return 风险检测结果列表
   */
  List<FraudRiskResult> batchDetection();

  /**
   * 处理检测到的风险
   * 
   * @param result 风险检测结果
   */
  void handleRisk(FraudRiskResult result);
}